iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
0
自我挑戰組

轉職道上的萌芽人生 − 自學程式開發ing系列 第 26

Day 26- 191012學習筆記 Git - Tag / 改寫 commit

  • 分享至 

  • xImage
  •  

提醒:由於看到這系列鐵人訂閱人數漸漸變多,標記一下這些內容是在「非常萌新時期」所寫,更多技術內容請參考我的 Github,歡迎跟我一起討論 ^ ^


今天繼續完成剩下的部分,另外有找到一個還不錯的git教學,可以做個參考。


Tag

通常要發布產品時,會有一個對外的版本號,而此時就會使用到 tag 來標記版本。

  • 在特定 commit 上加上 tag 後,不能隨意將 tag 移動到別的 commit 上,且一個 tag 名稱,只能對應一個 commit。(可將 tag 刪除後再用)
  • 可以使用 Tag 指向特定的 commit。
    (如 checkout、reset 等可直接以 Tagname 來使用)
  • GitHub 上會在 release 處,顯示所有 tag。
  • 種類:
    • lightweight tag:簡單地只標記一個 tagname 給他。一般只用來標記給內部使用,以方便閱讀。
    • annotated tag:可添加該 tag 的詳細說明。一般會用在比較正式的版本發布。
  • 基本用法:
    • git tag (名稱) (commit id):對指定 commit 添加 tag。
      (若無指定 commit,則會對當前 commit 進行 tag。)
      (使用參數-a--annotate,則可以添加 annotated tag)
    • git tag:查詢該所有 tag。(-n可列出 tag 的註解)
    • git push (remote) (名稱):將指定 tag 同步到 remote。
      (名稱改成使用參數 --tags,則同步所有 tag)
      (名稱前加冒號 :,可刪除 remote 的 tag)

改寫 commit

  • git commit --amend:可直接修改最新一次的 commit。
  • git revert (commit id):將該 commit 反向操作一次,並在末端產生新的 commit。
  • git reset (指定的commit):將還原到指定的 commit 時的狀態。
    • 使結果等同於該指定 commit 更後面的 commit 將全部消失。(實際上還在,只是在該分支只保留在此狀態)
    • 可以再指定 reset 回後面 commit 時的狀態。
    • git 會自動把動作前的狀態存在 ORIG_HEAD,因此可以 reset 到 ORIG_HEAD 來還原到 git 動作前的狀態。
    • --soft:只有 HEAD 還原到該指定 commit 完成後的狀態。
    • --mixed:index 也一起還原到該指定 commit 完成後的狀態。
    • --hard:index、work tree 也一起還原到該指定 commit 完成後的狀態。
    • <注意>:如果程式寫到一半,還沒 commit 前不小心下了指令git reset --hard xx,只能靠Ctrl + Z大法救回,但如果該文件已經關閉就無法囉。
  • git cherry-pick (指定的commit):將該 commit 所做的動作添加到當前 HEAD 之後,並在末端產生新的 commit。
  • git rebase -i (指定的commit)
    (或--interactive)
    可進入編輯器一次性設定 Rebase TODO,以個別設定 「指定的commit 之後的所有 commit」要進行 cherry-pick 的方式:
    • p, pick = 單純 cherry-pick
    • r, reword = cherry-pick 後,可以修改「註解」
    • e, edit = 可先進行編輯內容(可add),再執行 cherry-pick
    • s, squash = cherry-pick 並且與前一個合併。(前一個也必須在這批編輯內)
    • f, fixup = 與 squash 相同,但完成後直接移除該 commit 的註解。

(更準確說 rebase -i 是:先 reset 到指定的 commit,而後在編輯器內,一次設定多個各種方式的 cherry-pick。其預設為由上往下照順序執行 pick,依此執行則結果不做任何更動。)


(vi的基本操作可參考昨天文章


鐵人筆記:

今天在大大的文章中,看到這篇 Oh My Dear JavaScript,覺得他的名字取的真好XD


上一篇
Day 25- 191011學習筆記 Git - 分支 / remote
下一篇
Day 27- 191013學習筆記 Git
系列文
轉職道上的萌芽人生 − 自學程式開發ing30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言